﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SeguradoraIA.Diagrama;
using SeguradoraIA.Framework.Log;
using SeguradoraIA.Framework;
using SeguradoraIA.Class;

namespace SeguradoraIA.Forms
{
    public partial class DefinirPerfis : PageBase
    {
        #region - Atributos -

        SeguradoraIAEntities ctx = new SeguradoraIAEntities();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            List<Perfil> listaPerfil = new List<Perfil>();

            if(!IsPostBack)
            {
                Session["listaPerfil"] = null;
                this.ConfiguraTela();
                listaPerfil = ctx.Perfil.ToList();

                this.SetaSession(listaPerfil);
                CarregaGrid();
            }
        }

        private void CarregaGrid()
        {
            List<Perfil> listaPerfil = this.RecuperaSession();

            if (listaPerfil.Count() > 0)
            {
                gvPerfis.DataSource = listaPerfil;
                gvPerfis.DataBind();
                pnlComPerfis.Visible = true;
                pnlSemPerfis.Visible = false;
            }
            else
            {
                pnlComPerfis.Visible = false;
                pnlSemPerfis.Visible = true;
            }
        }

        private void SetaSession(List<Perfil> listaPerfil)
        {
            Session["listaPerfil"] = listaPerfil;
        }

        #region - Salvar -
        public override void Salvar()
        {
            try
            {
                foreach (GridViewRow row in gvPerfis.Rows)
                {
                    int idPerfil = gvPerfis.DataKeys[row.RowIndex].Value.ToString().ToInt();
                    DropDownList ddl = (DropDownList)row.FindControl("ddlResultadoEsperado");

                    ctx.Perfil.Where(x => x.IdPerfil == idPerfil).FirstOrDefault().IdResultadoEsperado = ddl.SelectedValue.ToInt();
                }

                ctx.SaveChanges();
                ShowAlert("Perfis salvos com sucesso!", "Default.aspx");
            }
            catch (Exception ex)
            {
                LogManager.LogException(ex);
                Response.Redirect("~/Forms/PaginaErro.aspx"
                    );
            }
        }
        #endregion


        #region - ConfiguraTela -
        private void ConfiguraTela()
        {
            this.ucBotoesPadrao.ExibeBotaoSalvar = true;
            this.ucBotoesPadrao.ExibirBotoes();
        }
        #endregion

        protected void gvPerfis_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            List<Perfil> listaPerfil = this.RecuperaSession();

            foreach (GridViewRow row in gvPerfis.Rows)
            {
                int idPerfil = gvPerfis.DataKeys[row.RowIndex].Value.ToString().ToInt();
                DropDownList ddl = (DropDownList)row.FindControl("ddlResultadoEsperado");

                ctx.Perfil.Where(x => x.IdPerfil == idPerfil).FirstOrDefault().IdResultadoEsperado = ddl.SelectedValue.ToInt();
                listaPerfil.Where(x => x.IdPerfil == idPerfil).FirstOrDefault().IdResultadoEsperado = ddl.SelectedValue.ToInt();
            }

            this.SetaSession(listaPerfil);

            gvPerfis.PageIndex = e.NewPageIndex;
            this.CarregaGrid();
            ctx.SaveChanges();
        }

        private List<Perfil> RecuperaSession()
        {
            List<Perfil> listaPerfil = new List<Perfil>();

            if(Session["listaPerfil"] != null)
                listaPerfil = (List<Perfil>)Session["listaPerfil"];

            return listaPerfil;
        }

        
    }
}